#include "FileSystem.hpp"

extern DeviceConf deviceConf;
String file_name = "/conf.txt";

void SaveConf()
{
    file_write(file_name, (u8 *)&deviceConf, sizeof(DeviceConf));
}

void LoadConf()
{
    file_read(file_name, (u8 *)&deviceConf, sizeof(DeviceConf));
}

//写操作
void file_write(String file_name, u8 *content, u16 len)
{
    /*****************************************写入闪存文件内容*************************************************/
    File dataFile = SPIFFS.open(file_name, "w"); // 建立File对象用于向SPIFFS中的file对象（即/notes.txt）写入信息
    for (int i = 0; i < len; i++)
        dataFile.write(content[i]); // 向dataFile写入字符串信息
    dataFile.close();               // 完成文件写入后关闭文件
}
//读操作
void file_read(String file_name, u8 *content, u16 len)
{
    //确认闪存中是否有file_name文件
    File dataFile;
    if (SPIFFS.exists(file_name))
    {
        //建立File对象用于从SPIFFS中读取文件
        dataFile = SPIFFS.open(file_name, "r");
        //读取文件内容并且通过串口监视器输出文件信息
        for (int i = 0; i < len; i++)
        {
            *(content + i) = (char)dataFile.read();
            String str = String("index:") + String(i) + String("\tvalue:") + String(*(content + i));
            Serial.println(str);
        }
    }
    else
    {
        Serial.print(file_name);
        Serial.print(" NOT FOUND.");
    }
    //完成文件读取后关闭文件
    dataFile.close();
}
//追加操作
void file_add(String file_name, String content)
{
    if (SPIFFS.exists(file_name))
    {
        File dataFile = SPIFFS.open(file_name, "a"); // 建立File对象用于向SPIFFS中的file对象（即/notes.txt）写入信息
        dataFile.println(content);                   // 向dataFile添加字符串信息
        dataFile.close();                            // 完成文件操作后关闭文件
        Serial.println("已经增添内容:");
        Serial.println(content);
    }
    else
    {
        Serial.print(file_name);
        Serial.print(" NOT FOUND.");
    }
}